home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / dviware / quicspool / libqmsquery / qmsver.y < prev    next >
Text File  |  1990-10-01  |  1KB  |  69 lines

  1. %{
  2. #ifndef lint
  3. static char *rcs = "$Header: qmsver.y,v 1.1 88/01/15 12:19:41 simpson Rel $";
  4. #endif
  5. /*
  6. $Log:    qmsver.y,v $
  7.  * Revision 1.1  88/01/15  12:19:41  simpson
  8.  * initial release
  9.  * 
  10.  * Revision 0.1  87/12/11  17:12:14  simpson
  11.  * beta test
  12.  * 
  13. */
  14. #include <stdio.h>
  15. #include <setjmp.h>
  16. #include <local/standard.h>
  17. #include "qms.h"
  18.  
  19. extern FILE *_Ifp, *_Ofp;
  20. extern Boolean    _FirstChar;
  21. static jmp_buf    Env;
  22. static struct qmsver    Result;
  23. %}
  24. %token DATE FIRMWARE VERSION ENDLINE QUIC
  25. %token <i> INTEGER
  26. %token <r> REAL
  27. %union {
  28.     int        i;
  29.     float   r;
  30. }
  31. %%
  32. version : VERSION '=' QUIC ':' REAL FIRMWARE ':' REAL DATE INTEGER '/'
  33.     INTEGER '/' INTEGER ENDLINE 
  34.     {
  35.         Result.version = $5;
  36.         Result.firmware = $8;
  37.         Result.date.month = $10;
  38.         Result.date.day = $12;
  39.         Result.date.year = $14;
  40.     }
  41.     ;
  42. %%
  43. #include "qmsverlex.c"
  44.  
  45. struct qmsver *qmsver()
  46. {
  47.     _FirstChar = TRUE;
  48.     fputs(QUICON, _Ofp);
  49.     fprintf(_Ofp, "%s00000", SYNTAX);
  50.     fprintf(_Ofp, "%sVER%s", INFO, ENDCMD);
  51.     fputs(QUICOFF, _Ofp);
  52.     (void)fflush(_Ofp);
  53.     if (setjmp(Env)) {
  54.     while (timedgetc(_Ifp) != EOF)    /* Discard remaining input */
  55.         ;
  56.     return NULL;
  57.     }
  58.     if (yyparse() != 0)
  59.     return NULL;
  60.     yysptr = yysbuf;        /* Resets lex lookahead buffer */
  61.     return &Result;
  62. }
  63.  
  64. static yyerror(s)
  65. char    *s;
  66. {
  67.     longjmp(Env, TRUE);
  68. }
  69.